package com.xianzhiOA.service.impl;/**
 * Created by Administrator on 2017/5/5.
 */

import com.github.pagehelper.PageHelper;
import com.xianzhiOA.bean.XzModule;
import com.xianzhiOA.bean.XzStage;
import com.xianzhiOA.dao.XzModuleMapper;
import com.xianzhiOA.dao.XzStageMapper;
import com.xianzhiOA.service.XzModuleService;
import com.xianzhiOA.service.XzWorkingService;
import com.xianzhiOA.util.PageBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 模快的业务层实现
 *
 * @author 甘汝雷
 * @create 2017-05-05 15:55
 **/
@Service("xzModuleService")
public class XzModuleServiceImpl implements XzModuleService {
    @Autowired
    private XzModuleMapper moduleMapper;
    @Autowired
    private XzStageMapper stageMapper;
    //添加模块
    @Override
    public int insert(XzModule module) {
        moduleMapper.insert(module);
        if (!module.getStageList().isEmpty()){
            for (XzStage s:module.getStageList()){
                s.setModuleId(module.getModuleId());
                stageMapper.insert(s);
            }
        }
        return 0;
    }

    //真删除
    @Override
    public int delete(Long moduleId) {
        return delete(moduleId);
    }

    //伪删除
    @Override
    public int isdelete(Long moduleId) {
        Map map = new HashMap();
        map.put("moduleId",moduleId);
        map.put("isdelete",1);
        return moduleMapper.update(map);
    }

    //修改
    @Override
    public int update(XzModule module) {
        moduleMapper.update(myMap(module));
        if (module.getStageList()!=null){
            for (XzStage s:module.getStageList()){
                s.setModuleId(module.getModuleId());
                if (s.getStageId()==null){
                    stageMapper.insert(s);
                }else stageMapper.update(s);
            }
        }
        return 0;
    }

    //分页查询
    @Override
    public PageBean<XzModule> selAll(XzModule module, int page, int rows, Date begin, Date end) {
        PageHelper.startPage(page,rows);
        Map map = myMap(module);
        if (begin!=null) map.put("beginDate",begin);
        if (end!=null) map.put("endDate",end);
        List<XzModule> moduleList = moduleMapper.selAll(map);
        PageBean<XzModule> pageBean = new PageBean<>(moduleList);
        return pageBean;
    }

    //通过module查询所有
    @Override
    public List<XzModule> selAll(XzModule module) {
        return moduleMapper.selAll(myMap(module));
    }
    //通过map查询所有
    @Override
    public List<XzModule> selAll(Map map) {
        return moduleMapper.selAll(map);
    }

    //把module转换成map类型
    public Map myMap(XzModule module){
        Map map = new HashMap();
        map.put("moduleId",module.getModuleId());
        map.put("moduleName",module.getModuleName());
        map.put("modulePlan",module.getModulePlan());
        map.put("moduleActual",module.getModuleActual());
        map.put("moduleEmp",module.getModuleEmp());
        map.put("moduleProject",module.getModuleProject());
        map.put("createTime",module.getCreateTime());
        map.put("moduleTime",module.getModuleTime());
        map.put("moduleBeginTime",module.getModuleBeginTime());
        map.put("projectName",module.getProjectName());
        map.put("empName",module.getEmpName());
        return map;
    }

    //通过模块名称查询
    @Override
    public XzModule selectByModuleName(Map map) {
        return moduleMapper.selectByModuleName(map);
    }

    //通过id查询
    @Override
    public XzModule selById(Long moduleId) {
        return moduleMapper.selById(moduleId);
    }

    @Override
    public int stageIsdelete(Long stageId) {
        XzStage stage = new XzStage();
        stage.setStageId(stageId);
        stage.setIsdelete(1);
        stage.setDeleteTime(new Date());
        return stageMapper.update(stage);
    }
}
